package com.zhu.instructions.math;

import com.zhu.instructions.base.NoOperandsInstruction;
import com.zhu.rtda.Frame;
import com.zhu.rtda.OperandStack;

/**
 * 指令：fadd
 *
 * 操作数：无
 *
 * 功能：
 *  将栈顶的两个 float 值相加：value1 + value2
 *
 * 栈变化：
 *      ..., value1(float), value2(float) → ..., result(float)
 *
 * 示例：
 *  2.5f + 3.7f = 6.2f
 *
 * 实现：
 *  使用 + 操作符对两个 float 值进行加法运算
 */
public class FADD extends NoOperandsInstruction {
    @Override
    public void execute(Frame frame) {
        OperandStack stack = frame.getOperandStack();
        float v2 = stack.popFloat();
        float v1 = stack.popFloat();
        float result = v1 + v2;
        stack.pushFloat(result);
    }
}
